1. Field of the Invention
The present disclosure relates to computer network management and, more particularly, to methods and apparatus for providing template-based provisioning in a distributed computing environment.
2. Description of Related Art
A variety of deployment topologies have been utilized to deploy an increasingly wide range of services on servers. Common topologies include simple deployment with a single-point of failure, Web-tier only cluster deployment, business-tier only cluster deployment, database-tier only cluster deployment, single-site highly available deployment and multi-site highly available deployment. Selection of a deployment topology may be based on requirements for scalability, redundancy and networking. For example, a deployment may consist of a Web tier and a database tier. The Web tier may consist of a single Web server or multiple Web servers functioning as a cluster. The database tier may consist of SQL database servers. Additionally, each tier may have domain controllers for authentication and DNS services.
The deployment topology affects the ease with which system hardware and software can be updated. Each topology has associated costs, monetary and otherwise, such as hardware costs, software licensing fees and management complexity, and a certain level of quality of service measured in terms of performance, availability and security. In conventional approaches, the design and realization of deployment solutions is a manual, costly and error-prone process.
The “Rainforest Project,” an International Business Machines Corporation (IBM) published document describes a three-stage automated deployment process. In the first stage, an automated search is employed to generate a deployment topology that offers a good tradeoff between cost and quality relative to an input set of deployment objectives. In the second stage, planning techniques are employed to generate a deployment plan that when executed deploys the service in accordance with the deployment topology design. In the third stage, the plan is executed to actually deploy and configure the service.
Provisioning is the process of deploying, installing, uninstalling, upgrading and configuring application services or otherwise implementing changes for hardware, software, network and/or storage resources. The term “provisioning” has been used to refer to low-level provisioning of servers or other resources, e.g., installing and configuring operating systems, as well as to high-level application provisioning, i.e., installing, updating and configuring applications on resources that have undergone low-level provisioning. Provisioning in a service delivery environment that supports a variety of deployment topologies incorporating varying numbers of servers can be a challenging task. In the conventional approaches, provisioning solutions are directly mapped, fixed infrastructure in the service delivery environment.
Applications to be implemented over a distributed computing environment can be considered to be composed of multiple elements which are distinct deployable units. In conventional approaches, once a deployment mapping has been developed, it can be difficult to change the mapping to accommodate alternative topologies and to adapt to changes in the delivery environment. A need exists for methodologies that simplify the provisioning process in distributed computing environments.